$(function () {
    $("#jqGrid").jqGrid({
        url: baseURL + 'rate/list',
        datatype: "json",
        colModel: [
			{ label: 'ID', name: 'id', width: 0, key: true, hidden:true},
			{ label: '区间起始值', name: 'minVal', sortable:false, width: 80 },
			{ label: '区间结束值', name: 'maxVal', sortable:false, width: 80 },
			{ label: '汇率', name: 'rate', sortable:false, width: 80 },
			{ label: '创建时间', name: 'timeCreate', sortable:false, width: 80 },
			/*{ label: '更新时间', name: 'timeUpdate', sortable:false, width: 80 },
			{ label: '创建人', name: 'createUser', sortable:false, width: 80 },
			{ label: '更新人', name: 'updateUser', sortable:false, width: 80 },
			{ label: '可用标记0:否,1:是', name: 'enabledFlag', sortable:false, width: 80 },*/
			{ label: '操作', name: 'operation', sortable:false, width: 38, formatter: function(value, options, row)
				{
					return "<a href='javascript:vm.delCol(" + row.id + ");'><span class='label label-warning'><i class='fa fa-trash-o'></i>删除</span></a>";
				}
			}
        ],
		viewrecords: true,
        height: 385,
        rowNum: 20,
		rowList : [10,20,30,50,100,200],
        rownumbers: false, 
        rownumWidth: 25, 
        autowidth:true,
        multiselect: true,
        pager: "#jqGridPager",
        jsonReader : {
            root: "page.list",
            page: "page.pageNum",
            total: "page.pages",
            records: "page.total"
        },
        prmNames : {
            page:"page", 
            rows:"limit", 
            order: "order"
        },
        gridComplete:function(){
        	//隐藏grid底部滚动条
        	$("#jqGrid").closest(".ui-jqgrid-bdiv").css({ "overflow-x" : "hidden" }); 
        }
    });
    jQuery("#jqGrid").jqGrid('navGrid','#jqGrid',{edit:false,add:false,del:false});
    
    //过滤时间
    var rangetime = $('#filterTime').daterangepicker({
        autoApply:false,
        singleDatePicker:false,
        showDropdowns:true,         // 是否显示年月选择条件
    	timePicker: true, 			// 是否显示小时和分钟选择条件
    	timePickerIncrement: 10, 	// 时间的增量，单位为分钟
        timePicker24Hour : true,
        opens : 'left', //日期选择框的弹出位置
        startDate: moment().startOf('year'), //startDate和endDate 的值如果跟 ranges 的两个相同则自动选择ranges中的行. 这里选中了清空行
        endDate: moment().endOf('year'),
    	ranges: {
    		'今日': [moment().startOf('day'), moment().endOf('day')],
    		'昨日': [moment().subtract(1, 'days').startOf('day'), moment().subtract(1, 'days').endOf('day')],
    		'最近7日': [moment().subtract(6, 'days'), moment()],
    		'最近30日': [moment().subtract(29, 'days'), moment()],
    		'本月': [moment().startOf('month'), moment().endOf('month')],
    		'上个月': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')],
    		'本年': [moment().startOf('year'), moment().endOf('year')],
    		'去年': [moment().subtract(1, 'year').startOf('year'), moment().subtract(1, 'year').endOf('year')]
    	},
        locale : {
            //format: 'YYYY-MM-DD HH:mm:ss',
            format: 'YYYY-MM-DD HH:mm',
            separator : ' - ',
        	customRangeLabel : '自定义',
            applyLabel : '确定',
            cancelLabel : '取消',
            fromLabel : '起始时间',
            toLabel : '结束时间',
            daysOfWeek : [ '日', '一', '二', '三', '四', '五', '六' ],
            monthNames : [ '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月' ],
            firstDay : 1,
            startDate: moment().startOf('day'),
            endDate: moment().endOf('day')
        }
    },
    function(start, end, label) // 格式化日期显示框
    {
    	//选择时间 回调，暂时不做操作。。。
    });
    
    $('#filterTime').val('');
    setTimeout("$('#filterTime').val('')", 100);
});

var vm = new Vue({
	el:'#rrapp',
	data:{
		q:{
			key: null
		},
		showList: true,
		title: null,
		dto: {}
	},
	methods: {
		query: function () {
			vm.reload();
		},
		trash: function () {
			$('#filterTime').val('');
		},
		add: function(){
			vm.showList = false;
			vm.title = "新增";
			vm.dto = {};
		},
		update: function (event) {
			var id = getSelectedRow();
			if(id == null){
				return ;
			}
			vm.showList = false;
            vm.title = "修改";
            
            vm.getInfo(id)
		},
		saveOrUpdate: function (event) {
			//先做必填判断
			if(!vm.dto.minVal){
				alert("起始值不能为空");
				return false;
			}
			if(!vm.dto.maxVal){
				alert("结束值不能为空");
				return false;
			}
			if(!vm.dto.rate){
				alert("利率不能为空");
				return false;
			}
			if(parseFloat(vm.dto.minVal)>=parseFloat(vm.dto.maxVal)){
				alert("起始值不能小于等于结束值");
				return false;
			}
			//再根据取得的所有的数据判断当前输入的最大最小值是否已经在区间内
			//分两种情况   1.新增时只需要取数据库数据判断即可。2.修改时如果修改的数据在之前数据的区间内也可以修改成功
			var judge=0;
			$.ajax({
				type: "POST",
			    url: baseURL + "rate/info/findAll",
			    success: function(r){
			    	if(r.code === 0){
			    		if(r.dto){
			    			$.each(r.dto, function (index, value) {
			    				if(judge==0){
			    					if(vm.dto.id==null){//第一种情况
			    						//起始值大于最小值小于最大值   X
					    				if(parseFloat(vm.dto.minVal)>=parseFloat(value.minVal) && parseFloat(vm.dto.minVal)<=parseFloat(value.maxVal)){
											alert("起始值与结束值存在存在数据交叉");
											judge=1;
											return false;
										}else if(parseFloat(vm.dto.minVal)<=parseFloat(value.minVal) && parseFloat(vm.dto.maxVal)<=parseFloat(value.maxVal) &&
												parseFloat(vm.dto.maxVal)>=parseFloat(value.minVal)){
											//起始值小于最小值  结束值小于最大值  大于最小值
											alert("起始值与结束值存在存在数据交叉");
											judge=1;
											return false;
										}else if(parseFloat(vm.dto.minVal)<=parseFloat(value.minVal) && parseFloat(vm.dto.maxVal)>=parseFloat(value.maxVal)){
											//起始值小于最大值   结束值大于最大值
											alert("起始值与结束值存在存在数据交叉");
											judge=1;
											return false;
										}
			    					}else {//第二种情况   先判断当前输入的起始值与结束值是否在之前的起始值与结束值之间
			    						var minVals=$("#minVals").val();
			    						var maxVals=$("#maxVals").val();
			    						//如果当前初始数据大于等于原始数据且当前结束数据小于等于原始结束数据则直接通过
			    						//(新增时已经做了交叉数据验证   所有在这种情况下不可能存在交叉数据)
			    						if(parseFloat(vm.dto.minVal)>=minVals && parseFloat(vm.dto.maxVal)<=maxVals){
			    							judge=2;//方便跳出循环
			    						}else if(parseFloat(vm.dto.minVal)>=minVals && parseFloat(vm.dto.maxVal)>=maxVals && parseFloat(vm.dto.minVal)>=parseFloat(value.minVal) && parseFloat(vm.dto.minVal)<=parseFloat(value.maxVal)
			    								&& parseFloat(vm.dto.maxVal)<=parseFloat(value.maxVal)){
			    							//当前初始数据大于元数据且当前结束数据大于元数据结束数据且当前初始数据大于等于当前循环数据最小值且小于等于当前循环数据的最大值
			    							alert("起始值与结束值存在存在数据交叉");
											judge=1;
											return false;
			    						}else if(parseFloat(vm.dto.minVal)>=minVals && parseFloat(vm.dto.maxVal)>=maxVals && parseFloat(vm.dto.maxVal)>=parseFloat(value.minVal) && parseFloat(vm.dto.maxVal)<=parseFloat(value.maxVal)){
			    							//当前初始数据大于元数据且当前结束数据大于元数据结束数据且当前结束数据大于等于当前循环数据最小值且小于等于当前循环数据的最大值
			    							alert("起始值与结束值存在存在数据交叉");
											judge=1;
											return false;
			    						}else if(parseFloat(vm.dto.minVal)<=minVals && parseFloat(vm.dto.maxVal)<=maxVals && parseFloat(vm.dto.minVal)>=parseFloat(value.minVal) && parseFloat(vm.dto.minVal)<=parseFloat(value.maxVal)){
			    							//当前初始数据小于元数据且当前结束数据小于元数据结束数据且当前初始数据大于等于循环数据的最小值且小于等于当前循环数据的最大值
			    							alert("起始值与结束值存在存在数据交叉");
											judge=1;
											return false;
			    						}else if(parseFloat(vm.dto.minVal)<=minVals && parseFloat(vm.dto.maxVal)<=maxVals && parseFloat(vm.dto.maxVal)>=parseFloat(value.minVal) && 
			    								parseFloat(vm.dto.maxVal)<=parseFloat(value.maxVal) && parseFloat(vm.dto.minVal)>=parseFloat(value.minVal)){
			    							//当前初始数据小于元数据且当前结束数据小于元数据结束数据且当前结束数据大于等于循环数据的最小值且小于等于当前循环数据的最大值
			    							alert("起始值与结束值存在存在数据交叉");
											judge=1;
											return false;
			    						}else if(parseFloat(vm.dto.minVal)<=minVals && parseFloat(vm.dto.maxVal)>=maxVals && parseFloat(vm.dto.minVal)>=parseFloat(value.minVal) && parseFloat(vm.dto.minVal)<=parseFloat(value.maxVal)
			    								&& parseFloat(vm.dto.maxVal)<=parseFloat(value.maxVal)){
			    							//当前初始数据小于初始元数据且当前结束数据大于原数据结束数据且当前初始数据大于等于当前循环数据最小值且小于等于当前循环数据最大值
			    							alert("起始值与结束值存在存在数据交叉");
											judge=1;
											return false;
			    						}else if(parseFloat(vm.dto.minVal)<=minVals && parseFloat(vm.dto.maxVal)>=maxVals && parseFloat(vm.dto.maxVal)>=parseFloat(value.minVal) && parseFloat(vm.dto.maxVal)<=parseFloat(value.maxVal)
			    								&& parseFloat(vm.dto.minVal)>=parseFloat(value.minVal)){
			    							//当前初始数据小于初始元数据且当前结束数据大于原数据结束数据且当前结束数据大于等于当前循环数据最小值且小于等于当前循环数据最大值
			    							alert("起始值与结束值存在存在数据交叉");
											judge=1;
											return false;
			    						}
									}
			    				}
			    			})
			    		}
			    		if(judge==1){
							return false;
						}
						console.log(vm.dto)
						var url = vm.dto.id == null ? baseURL + "rate/save" : baseURL + "rate/update";
						$.ajax({
							type: "POST",
						    url: url,
						    data: JSON.stringify(vm.dto),
						    success: function(r){
						    	if(r.code === 0){
									alert('操作成功', function(index){
										vm.reload();
									});
								}else{
									alert(r.msg);
								}
							}
						});
				 }else {
					 alert(r.msg);
				}
			   }
			});
			
			//alert(judge)
			
		},
		delCol: function (id) {
			if(id == null){
				return ;
			}
			var ids = [id];
			confirm('确定要删除选中的记录？', function(){
				$.ajax({
					type: "PUT",
				    url: baseURL + "rate/delete",
				    data: JSON.stringify(ids),
				    success: function(r){
						if(r.code === 0){
							alert('操作成功', function(index){
								$("#jqGrid").trigger("reloadGrid");
							});
						}else{
							alert(r.msg);
						}
					}
				});
			});
		},
		del: function (event) {
			var ids = getSelectedRows();
			if(ids == null){
				return ;
			}
			
			confirm('确定要删除选中的记录？', function(){
				$.ajax({
					type: "PUT",
				    url: baseURL + "rate/delete",
				    data: JSON.stringify(ids),
				    success: function(r){
						if(r.code === 0){
							alert('操作成功', function(index){
								$("#jqGrid").trigger("reloadGrid");
							});
						}else{
							alert(r.msg);
						}
					}
				});
			});
		},
		getInfo: function(id){
			$.get(baseURL + "rate/info/"+id, function(r){
				$("#minVals").val(r.dto.minVal);
				$("#maxVals").val(r.dto.maxVal);
                vm.dto = r.dto;
            });
		},
		reload: function (event) {
			vm.showList = true;
			var _postData = $("#jqGrid").jqGrid('getGridParam','postData');
			delete _postData['stimeStr'];
			delete _postData['etimeStr'];
			if((vtime = $.trim($('#filterTime').val())) != '')
			{
				if(vtime.indexOf(" - ") > -1)
				{
					_postData['stimeStr'] = $.trim(vtime.split(" - ")[0]) + " 00";
					_postData['etimeStr'] = $.trim(vtime.split(" - ")[1]) + " 59";
				}
				else
				{
					_postData['stimeStr'] = vtime+ " 00";
				}
			}

			var page = $("#jqGrid").jqGrid('getGridParam','page');
			$("#jqGrid").jqGrid('setGridParam',{ 
                page:page
            }).trigger("reloadGrid");
		}
	}
});
function onlyNumber(obj){
	//得到第一个字符是否为负号
	var t = obj.value.charAt(0); 
	//先把非数字的都替换掉，除了数字和. 
	obj.value = obj.value.replace(/[^\d\.]/g,''); 
	//必须保证第一个为数字而不是. 
	obj.value = obj.value.replace(/^\./g,''); 
	//保证只有出现一个.而没有多个. 
	obj.value = obj.value.replace(/\.{2,}/g,'.'); 
	//保证.只出现一次，而不能出现两次以上 
	obj.value = obj.value.replace('.','$#$').replace(/\./g,'').replace('$#$','.');
	//如果第一位是负号，则允许添加
	/*if(t == '-'){
	obj.value = '-'+obj.value;

	}*/

	}